package com.ursu.client.gin;

import com.google.gwt.inject.client.GinModules;
import com.gwtplatform.dispatch.client.gin.DispatchAsyncModule;
import com.ursu.client.AdminGatekeeper;
import com.ursu.client.LoggedInGatekeeper;
import com.ursu.client.gin.ClientModule;
import com.ursu.client.presenter.LoginPagePresenter;
import com.google.gwt.inject.client.Ginjector;
import com.google.gwt.event.shared.EventBus;
import com.gwtplatform.mvp.client.proxy.PlaceManager;
import com.google.gwt.inject.client.AsyncProvider;
import com.google.inject.Provider;
import com.ursu.client.presenter.CreateAccountPresenter;
import com.ursu.client.presenter.FirstApplicationPresenter;
import com.ursu.client.presenter.SecondPagePresenter;
import com.ursu.client.presenter.CreateAdminPresenter;

@GinModules({ DispatchAsyncModule.class, ClientModule.class })
public interface ClientGinjector extends Ginjector {

	EventBus getEventBus();
	
	LoggedInGatekeeper getLoggedInGatekeeper();
	AdminGatekeeper getAdminGatekeeper();

	PlaceManager getPlaceManager();

	AsyncProvider<LoginPagePresenter> getMainpagePresenter();

	Provider<CreateAccountPresenter> getCreateAccountPresenter();

	AsyncProvider<FirstApplicationPresenter> getFirstApplicationPresenter();

	AsyncProvider<SecondPagePresenter> getSecondPagePresenter();

	Provider<CreateAdminPresenter> getCreateAdminPresenter();

}
